\section{Paradigm}
\label{section:Paradigm}

This section discusses two very commonly used paradigms used in programming, imperative programming and object oriented programming\cite{paradigms}. A common example of imperative programming  is \textit{C} where \textit{C\#} is an object oriented programming. It is important to understand the most programming languages do not implement a single paradigm purely. As an example \textit{C\#}  is also \textit{imperative}. CLUBs likewise uses both the imperative programming paradigm and the object oriented programming paradigm.

\subsection{Imperative Programming}

	An imperative language is composed of a series of statements. Each statement is capable of changing the program's state, for example they are able to change variables inside of the program. 

	All statements vary depending on their purpose; basic statements such as assignments are able to manipulate a single variable, while composite statements can be composed of multiple statements using recursion. Composite statements can either be control structures (such as loops and `if' statements) or block structures.
	
	Statements are commonly subdivided into expressions. An expression is a command that returns a value. For example, an evaluation expression `$4$ = $4$' evaluates to true, and an arithmetic expression such as `$2$ + $2$' evaluates to $4$.

	This way of programming is very similar to describing everyday tasks. Like a food recipe, which is executed step by step.
	

\subsection{Object Oriented Programming}

	Object Oriented languages are derived from imperative languages; they remain composed by statements, but the statements are arranged as methods located on objects, not as a  stream of execution.
	
	The program state of imperative programming is also divided into object states. As a result objects are collections of states and methods.
	
	In our language each board game element is an object (See problem domain \ref{section:ProblemDomain} for a list of game elements) with some methods and variables predefined, such as \textit{MaxPieces} on \textit{cells}.